package com.zx._06_JVM.chapter_04_metrics.model;

import lombok.Data;

/**
 * gc性能指标
 */
@Data
public class GcMetrics {

    // GC吞吐量(Throughput)应用系统的生命周期内，应用程序所花费的时间和系统总运行时间的比值。
    // 系统总运行时间=应用程序耗时+GC耗时。
    // 如果系统运行了100分钟，GC耗时1分钟，则系统吞吐量=99%
    private double throughput;

    //垃圾回收器负载。垃圾回收器负载=GC耗时/系统总运行时间
    private double gcLoad;

    //最大停顿时间(pause times)。垃圾回收器运行时，应用程序的暂停时间
    // 这个无法获得，只能通过分析日志获得
    private double maxStw;

    //垃圾回收频率。垃圾回收器多长时间运行一次。一般而言，频率越低越好，通常增大堆空间可以有效降低垃圾回收发生的频率，但是会增加回收时产生的停顿时间。
    private double gcf;
    private double ygcf;
    private double fgcf;

    //堆使用率。程序在运行过程中，单位时间内能使用的堆内存空间的大小
    private double maxHeapUsed;
    private double minHeapUsed;
    private double avgHeapUsed;

    // 堆容量，单位MB
    private double maxHeapc;
    private double minHeapc;
    private double avgHeapc;
    // 堆容量,survivor，单位MB
    private double maxSc;
    private double minSc;
    private double avgSc;
    // 堆容量,eden，单位MB
    private double maxEc;
    private double minEc;
    private double avgEc;
    // 堆容量,old，单位MB
    private double maxOc;
    private double minOc;
    private double avgOc;

    //gc总次数
    private double gct;
    //gc总时长
    private double gcc;
    //新生代gc总次数
    private double ygct;
    //新生代gc总时长
    private double ygc;
    //老年代gc总次数
    private double fgct;
    //老年代gc总时长
    private double fgc;

}
